Complex Query এর জন্য MapReduce ব্যবহার

Database Tutorials - কাউচডিবি (CouchDB) CouchDB এর MapReduce ফাংশন |
192
192

MapReduce একটি শক্তিশালী কৌশল যা ডেটাবেসে জটিল কুয়েরি এবং বিশ্লেষণ কার্য সম্পাদন করতে ব্যবহৃত হয়। CouchDB তে MapReduce ব্যবহার করে আপনি complex queries বা জটিল কুয়েরি সহজেই কার্যকরভাবে পরিচালনা করতে পারেন। CouchDB এর MapReduce পদ্ধতি ডেটার বিশ্লেষণ, ফিল্টারিং এবং গ্রুপিংয়ের জন্য খুবই কার্যকরী। এটি মূলত দুটি ধাপে কাজ করে: Map এবং Reduce

1. MapReduce পদ্ধতির ধারণা

  • Map: এই পর্যায়ে ডেটা থেকে একটি কাস্টম key-value pair তৈরি করা হয়। এটি ডেটাকে একটি নির্দিষ্ট আউটপুট ফরম্যাটে রূপান্তর করে।
  • Reduce: Map দ্বারা উৎপন্ন ডেটার উপর অ্যাকশন বা অপারেশন করার মাধ্যমে একটি ফলাফল তৈরি করা হয়। এটি সাধারণত aggregation বা grouping এর জন্য ব্যবহৃত হয়।

2. CouchDB তে MapReduce কাজের পদ্ধতি

CouchDB তে MapReduce কৌশলটি Views এর মাধ্যমে কাজ করে। যখন আপনি একটি view তৈরি করেন, তখন আপনি একটি Map function এবং একটি Reduce function সংজ্ঞায়িত করেন। Map function ডেটা কুয়েরি করার জন্য ব্যবহার করা হয় এবং Reduce function Map থেকে পাওয়া ডেটাকে প্রক্রিয়া করে এবং সারাংশ তৈরি করে।

Map Function:

Map function ডেটাকে key-value পেয়ারে রূপান্তর করে। এর মাধ্যমে ডেটাকে বিভিন্ন ক্যাটাগরি বা গোষ্ঠীতে বিভক্ত করা যায়।

Reduce Function:

Reduce function, Map এর মাধ্যমে উৎপন্ন key-value পেয়ারগুলোর উপর পরবর্তী অপারেশন যেমন যোগফল, গড়, বা অন্যান্য অগ্রীমেশন (aggregation) চালায়। এটি আপনার কুয়েরি ফলাফলকে প্রক্রিয়া করার জন্য ব্যবহৃত হয়।


3. MapReduce Example in CouchDB

ধরা যাক, আমাদের একটি ডাটাবেসে বিক্রয় (sales) সম্পর্কিত ডেটা রয়েছে এবং আমরা প্রতিটি বিক্রয় প্রতিনিধির মোট বিক্রয় পরিমাণ বের করতে চাই। এই ক্ষেত্রে আমরা MapReduce ব্যবহার করে জটিল কুয়েরি সম্পাদন করতে পারি।

Step 1: Create Map Function

function (doc) {
  if (doc.type === "sale") {
    emit(doc.salesperson, doc.amount);
  }
}

Explanation:

  • emit(doc.salesperson, doc.amount) দ্বারা আমরা salesperson কে key এবং amount কে value হিসেবে emit করছি।
  • doc.type === "sale" চেক করে নিশ্চিত করছি যে শুধুমাত্র sale টাইপের ডকুমেন্টগুলোকে পাস করা হবে।

Step 2: Create Reduce Function

function (keys, values, rereduce) {
  return sum(values);
}

Explanation:

  • এই Reduce function টি sum(values) ব্যবহার করে সমস্ত salesperson এর বিক্রয় পরিমাণ যোগফল করে একটি মোট পরিমাণ প্রদান করবে।
  • rereduce ফ্ল্যাগটি ব্যবহার করা হয় যখন CouchDB বিভিন্ন Reduce ফলাফল পুনরায় কম্বাইন করতে চাই।

4. CouchDB View Example

CouchDB এ এই MapReduce কুয়েরি তৈরি করা হলে, এটি একটি view আকারে সংরক্ষিত হয়। আপনি এই view-এর মাধ্যমে complex queries চালাতে পারেন।

Step 3: Create the View

এখন, আপনি CouchDB তে view তৈরি করতে পারেন:

{
   "_id": "_design/sales",
   "views": {
      "total_sales_per_salesperson": {
         "map": "function (doc) { if (doc.type === 'sale') { emit(doc.salesperson, doc.amount); } }",
         "reduce": "function (keys, values, rereduce) { return sum(values); }"
      }
   }
}
  • এখানে _design/sales একটি ডকুমেন্ট ID যা view সংরক্ষণ করে।
  • total_sales_per_salesperson হলো view name, যা Map এবং Reduce ফাংশন ধারণ করে।

5. Querying the View

এখন আপনি তৈরি করা view থেকে কুয়েরি চালাতে পারেন:

GET /database/_design/sales/_view/total_sales_per_salesperson

এই কুয়েরিটি আপনি সার্ভারে পাঠালে CouchDB MapReduce এর মাধ্যমে ডেটা প্রক্রিয়া করে এবং প্রতি বিক্রয় প্রতিনিধির জন্য মোট বিক্রয় পরিমাণ প্রদান করবে।

Response Example:

{
   "rows": [
      {
         "key": "John",
         "value": 15000
      },
      {
         "key": "Alice",
         "value": 12000
      }
   ]
}
  • এখানে key হলো বিক্রয় প্রতিনিধি এবং value হলো তাদের মোট বিক্রয় পরিমাণ।

6. Complex Query উদাহরণ

ধরা যাক, আপনি আপনার salesperson এর বিক্রয় পরিমাণের গড় বের করতে চান। এই কাজটি MapReduce এর সাহায্যে খুব সহজেই করা যায়।

Map Function for Average Calculation

function (doc) {
  if (doc.type === "sale") {
    emit(doc.salesperson, doc.amount);
  }
}

Reduce Function for Average Calculation

function (keys, values, rereduce) {
  var total = sum(values);
  var count = values.length;
  return total / count;
}

এখানে Reduce function বিক্রয় পরিমাণের মোট যোগফল (sum) এবং মোট সেলস প্রতিনিধি সংখ্যা (count) নিয়ে গড় বের করবে।


7. MapReduce এর সুবিধা

  1. বড় ডেটাসেট: MapReduce বড় ডেটাসেটের উপর কাজ করতে সক্ষম এবং ডেটাকে অংশে ভাগ করে সেগুলোর উপর আলাদা আলাদা অপারেশন করতে পারে।
  2. ডিস্ট্রিবিউটেড প্রসেসিং: CouchDB ক্লাস্টারিং সমর্থন করে, যা MapReduce এর মাধ্যমে ডিস্ট্রিবিউটেড প্রসেসিংকে আরও দক্ষ করে তোলে।
  3. ফ্লেক্সিবিলিটি: জটিল কুয়েরি এবং aggregation সুবিধা দেয় যা আপনার ডেটা বিশ্লেষণকে অনেক সহজ করে তোলে।
  4. পারফরম্যান্স: MapReduce কুয়েরি কোড এবং ডেটা একত্রে কার্যকরভাবে প্রসেসিং করতে সাহায্য করে, যা পারফরম্যান্স উন্নত করে।

সারাংশ:
CouchDB তে MapReduce ব্যবহার করে আপনি জটিল কুয়েরি যেমন aggregations, groupings, এবং advanced filtering করতে পারেন। এটি CouchDB এর বিশাল ডেটাসেটের উপর কার্যকরীভাবে কাজ করার ক্ষমতা প্রদান করে এবং বিভিন্ন ধরনের বিশ্লেষণ করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion